iT邦幫忙

2022 iThome 鐵人賽

DAY 1
0
Software Development

程式基礎概念討論系列 第 1

[DAY 1] 前言及該學習什麼程式語言?

  • 分享至 

  • xImage
  •  

自我期許與前言

大家好,這是我第一次參加鐵人賽。希望透過這次的鐵人賽可以讓自己養成寫作的習慣,並把學會的知識整理及記錄下來。

在剛開始學習編程時,相信很多人會像我當初一樣不自覺的把注意力集中在程式語言的語法上,把對程式語言的理解放在「如果以這樣的方式或順序來寫代碼的話,就會有那樣的結果」這種相當直觀的想法而不是去理解它背後所包含的概念,也就是說「為什麼以這樣的方式或順序來寫代碼的話,會有那樣的結果」這個不起眼卻很重要的部分。而在前者的心態下便讓很多學習程式語言的新手們會認為程式語言的學習很困難,因為在這過程中新手們只是靠著一味死記硬背著一段又一段的代碼來學習,但程式碼基本都是使用英文的,而這對於母語不是英文的人來說自然是一個很大的難關。當然,在反復的練習程式語言的過程中,大多數人還是會慢慢的從前者的心態慢慢的向著後者的心態靠攏的,但仍然有不少人在這過程中無法忍受而放棄呢?我便有朋友是因為認為自己沒辦法記下大量的程式碼而很可惜的放棄了學習編程。

在我讀大學的時候,老師為了讓我們擺脫對程式語言的依賴而要我們在一個學期內使用多種的程式語言來完成不同的課業,這使我第一次注意到程式設計的基礎部分實際上對於大多數的程式語言來說是接近一樣的(不過還是有些例外,像是 SQL),也就是說,如果能掌握程式語言背後的概念的話,便不會受到程式語言的限制,可以隨意的切換使用不同的語言而不需要每次都花費大量的時間重複學習雖然寫法不一樣,但概念相當接近的基礎部分。因此,在本系列中,會嘗試介紹程式的基礎概念,並會在需要使用程式碼時試圖使用多於一種以上的程式語言(應該是我比較熟悉的 C# 加上其他語言)來演示,希望這能讓大家明白程式語言背後的邏輯都是共通,從而集中在程式的概念上。當然,程式語言的練習還是必要的,畢竟沒有反複的練習的話是很難把學到知識記到長期記憶,只是如果在理解了概念、也理解了「為什麼要這樣做」的情況下有意識的進行練習,會有更好的效率與更多的趣味。

該學習什麼程式語言?

如前文所提,大多數的程式語言的基礎概念都是一樣的,因此在理論上無論從任何一種程式語言開始學習都是一樣的。

不過,不同的程式語言之間還是會因為其語法的複雜性而有著些微的學習難度的差異,在這一點來看的話,早期的程式語言如 C、C++ 等便被認為比較晚出現的程式語言如 Java、Python 等更困難。但在練習程式語言的過程中,我們都會慢慢的記下該語言的語法,因此我覺得這些微的差異是可以被忽視的。

另一方面,也有人會認為較晚出現的程式語言大多會把一些較進階的程式概念的部分,像是列表 (List) 等直接在程式庫中提供相關的函式,這導致了新手在學習的過程中容易依賴程式庫,在缺乏對重現程式概念的練習下變得對本來就比較抽象的進階概念比較難掌握及理解。不過,即使程式庫中有提供函式,新手也可以自行去嘗試練習,而且有些複雜的概念,像是機器學習,也的確很難去自行重現。因此,如果透過成熟的程式庫來省去一部分的時間,幫助我們去學習那些概念的其他部分,如應用等,又是否真的不妥呢?

那麼我們應該從什麼程式語言開始學習程式設計比較好呢?我想答案不應該被限制在那一種語言比較好這一點上,反而應該要看大家學習程式設計的目的來決定應該學習什麼程式語言,像是如果想要開發手機應用程式的話便可以從安卓系統使用的 Java/Kotlin 或是 iOS 系統使用的 Swift 開始、如果想要建立網頁的話便可以從 JavaScript 開始、如果想要製作遊戲的話便可以直接從 Unity 使用的 C# 或是 Unreal 使用的 C++ 開始等。這樣便可以在學習概念的過程中也同時把需要的程式語言的語法也記下來,不需要在學習之後重新再記一個新的程式語言的語法。


下一篇
[DAY 2] 經典的開場 Hello World 與它的意義
系列文
程式基礎概念討論30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言